package com.tl.khadmin.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
	
	private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
	
	/**
	 * 根据传入时间 获取上个月21号0点时间
	 * @param time
	 * @return
	 */
	public static String getLastMonth21StartTime(Date date) { 
		//获取前一个月第一天
		Calendar calendar1 = Calendar.getInstance();
		calendar1.add(Calendar.MONTH, -1);
		calendar1.set(Calendar.DAY_OF_MONTH,21);
		String firstDay = dateFormat.format(calendar1.getTime()); 
	    return firstDay + " 00:00:00";
	} 

	/**
	 * 根据传入时间 获取上个月1号0点时间
	 * @param time
	 * @return
	 */
	public static String getLastMonthStartTime(Date date) { 
		//获取前一个月第一天
		Calendar calendar1 = Calendar.getInstance();
		calendar1.add(Calendar.MONTH, -1);
		calendar1.set(Calendar.DAY_OF_MONTH,1);
		String firstDay = dateFormat.format(calendar1.getTime()); 
	    return firstDay + " 00:00:00";
	} 
	
	/**
	 * 根据传入时间 获取上个月1号0点时间
	 * @param time
	 * @return
	 */
	public static String getLastMonthEndTime(Date date) {  
		//获取前一个月最后一天
		Calendar calendar2 = Calendar.getInstance();
		calendar2.set(Calendar.DAY_OF_MONTH, 0);
		String lastDay = dateFormat.format(calendar2.getTime());
	    return lastDay + " 23:59:59";
	} 
	
	/**
	 * 根据传入时间 获取上周一0点时间
	 * @param time
	 * @return
	 */
	public static String getLastWeekMondayTime(Date date) { 
	    Calendar  cal = Calendar.getInstance();
	    cal.setTime(date);
	    if (1 == cal.get(Calendar.DAY_OF_WEEK)) {//判断当前日期是否为周末，因为周末是本周第一天，如果不向后推迟一天的到的将是下周一的零点，而不是本周周一零点
	        cal.add(Calendar.DATE, -1);
	    }
	    cal.add(Calendar.DAY_OF_MONTH, -7);//时间减去7天
	    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//Calendar.MONDAY 这个是周一的意思      想获取周几就更换这个 
	    return dateFormat.format(cal.getTime()) + " 00:00:00";
	} 
	
	/**
	 * 根据传入时间 获取上周周天结束时间
	 * @param time 
	 * @return
	 */
	public static String getLastWeekSundayTime(Date date) { 
	    Calendar  cal = Calendar.getInstance();
	    cal.setTime(date); 
	    if (1 == cal.get(Calendar.DAY_OF_WEEK)) {//判断当前日期是否为周末，因为周末是本周第一天，如果不向后推迟一天的到的将是下周一的零点，而不是本周周一零点
	        cal.add(Calendar.DATE, -1);
	    }
	    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//Calendar.SUNDAY 周天想获取周几就更换这个
	    return dateFormat.format(cal.getTime()) + " 23:59:59";
	}  
	
	/**
	 * 根据传入时间 获取上一天结束时间
	 * @param time 
	 * @return
	 */
	public static String getLastDayEndTime(Date date) { 
	    Calendar  cal = Calendar.getInstance();
	    cal.setTime(date); 
	    cal.add(Calendar.DATE, -1);
	    return dateFormat.format(cal.getTime()) + " 23:59:59";
	} 
	
	/**
	 * 根据传入时间 获取十天前开始时间
	 * @param time 
	 * @return
	 */
	public static String getTenDayBeforeStartTime(Date date) { 
	    Calendar  cal = Calendar.getInstance();
	    cal.setTime(date); 
	    cal.add(Calendar.DATE, -10);
	    return dateFormat.format(cal.getTime()) + " 00:00:00";
	} 
	
}
